home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / yahtzee.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1984-04-24  |  16.0 KB  |  620 lines

  1. 10  ' ***********************************************************************
  2. 20  ' *                                                                     *
  3. 30  ' *          ORIGINAL BY JL HELMS & MF PEZOK FOR CCII                   *
  4. 40  ' *                                                                     *
  5. 50  ' *                           YATZEE                                    *
  6. 60  ' *                                                                     *
  7. 70  ' *                        CORONADO, CA                                 *
  8. 80  ' *                                                                     *
  9. 90  ' *             ADAPTED TO IBM PC BY PATRICK LEABO                      *
  10. 100  '*                         TUCSON, AZ                                  *
  11. 110  '*                                                                     *
  12. 120  '*     Uploaded to PCanada by Mark Magner (PC296)  April 13, 1983      *
  13. 130  '***********************************************************************
  14. 140  '
  15. 150  DEFINT A-Z
  16. 160  DIM C(5):DIM K(18,7):DIM F(5):DIM A$(7)
  17. 170  DIM S(6,5):DIM M(13),TN(6),DU(6):KEY OFF:COLOR 7,0:WIDTH 80
  18. 180  SCREEN 0,1:RESTORE 240:FOR N= 1 TO 6:READ TN(N):NEXT
  19. 190  DEF SEG=&H40 : POKE &H17, PEEK (&H17) OR 64 ' Set Caps Lock
  20. 200  GOSUB 4160
  21. 210  C1= 39:C2= 63:C3= 33:C4= 56
  22. 220  GOSUB 3730
  23. 230  CLS:GOSUB 3520
  24. 240  DATA 49,51,53,54,56,61
  25. 250  GOSUB 5890:REM  draw yatzee board
  26. 260  RANDOMIZE VAL(RIGHT$(TIME$,2))
  27. 270  LOCATE 25,1
  28. 280  PRINT "HOW MANY PLAYERS?  ";:LOCATE ,,1:GOSUB 1180
  29. 290  GOSUB 6170: N=ASC(KB$)-48
  30. 300  IF N< 1 OR N> 5 THEN 270
  31. 310  IF N< 5 THEN GOSUB 5070
  32. 320  IF CC= 1 THEN GOSUB 4550
  33. 330  FOR A= 1 TO N
  34. 340  LOCATE 25,1:PRINT STRING$(70," ");:LOCATE 25,1
  35. 350  PRINT "PLAYER NUMBER "A;" NAME PLEASE  ";
  36. 360  GOSUB 1180:LINE INPUT ;A$(A):IF A$(A)= "" THEN BEEP:GOTO 340
  37. 370  A$(A)=LEFT$(A$(A),9)
  38. 380  NEXT A
  39. 390  IF CC= 1 THEN N= N+ 1:A$(N)= "IBM PC"
  40. 400  LOCATE 23,1
  41. 410  A= 0
  42. 420  REM 
  43. 430  REM   NEXT ROLL PRESET
  44. 440  REM  
  45. 450  A= A+ 1:IF A> N THEN A= 1
  46. 460  H= 0:GOSUB 4410
  47. 470  IF A= 0 THEN 3830
  48. 480  IF K(18,A)= 2 THEN 450
  49. 490  LOCATE 23,1:PRINT STRING$(60," ");
  50. 500  LOCATE 23,4* (A- 1)+ 14
  51. 510  PRINT A$(A);
  52. 520  REM 
  53. 530  REM   INITIAL ROLL
  54. 540  REM  
  55. 550  H= H+ 1:MR= 0
  56. 560  FOR B= 1 TO 5
  57. 570  J= B- 1:C(B)= INT (6* RND (1)+ 1)
  58. 580  DIE= C(B):F(B)= 0
  59. 590  GOSUB 4320
  60. 600  GOSUB 4600
  61. 610  NEXT B
  62. 620  IF A* CC= N THEN 1230
  63. 630  REM 
  64. 640  REM  PLAYER SELECTS QTY TO ROLL
  65. 650  REM 
  66. 660  GOSUB 6150
  67. 670  IF H> 2 THEN 1030
  68. 680  POKE 106,0:PRINT " HOW MANY DICE TO ROLL AGAIN? ";:LOCATE ,,1:GOSUB 1170:GOSUB 6170:F$=KB$:PRINT F$;:F=ASC(F$)-48:LOCATE ,,0
  69. 690  IF F= - 1 THEN GOSUB 35000
  70. 700  IF F< 0 OR F> 5 THEN 660
  71. 710  IF F= 0 THEN 1030
  72. 720  IF F= 5 THEN 520
  73. 730  REM 
  74. 740  REM  PLAYER SELECTS DICE TO ROLL
  75. 750  REM 
  76. 760  H= H+ 1
  77. 770  GOSUB 6150
  78. 780  FOR NN= 1 TO 4:F(NN)= 0:NEXT 
  79. 790  PRINT " ROLL WHICH";F;"DICE AGAIN   ";:LOCATE ,,1
  80. 800  GOSUB 1180:FOR ND= 1 TO F:
  81. 810  GOSUB 6170:F$=KB$::F(ND)= ASC(F$)- 48:GOSUB 1210:IF F(ND)= 0 AND  ND= 1 THEN  ND= F:GOTO 830
  82. 820  IF F(ND)< 1 OR  F(ND)> 5 THEN 810
  83. 830  PRINT F(ND);:NEXT
  84. 840  X= 2:XF= 0
  85. 850  FOR J= 1 TO F
  86. 860  IF F= 1 THEN 880
  87. 870  IF F(J)= F(J+ 1)THEN X= 1
  88. 880  IF F(1)= 0 THEN XF= 1
  89. 890  NEXT J:IF XF= 1 THEN H= H- 1:GOTO 660
  90. 900  ON X GOTO 770,910
  91. 910  REM  
  92. 920  REM  PLAYER ROLLS DICE AGAIN
  93. 930  REM 
  94. 940  FOR B= 1 TO 4
  95. 950  IF F(B)= 0 THEN 1010
  96. 960  C(F(B))= INT (6* RND (1)+ 1)
  97. 970  DIE= C(F(B)):J= F(B)- 1
  98. 980  GOSUB 4320
  99. 990  GOSUB 4600
  100. 1000  F(B)= 0
  101. 1010  NEXT B
  102. 1020  GOTO 630
  103. 1030  REM 
  104. 1040  REM   PLAY BOARD NUMBER
  105. 1050  REM 
  106. 1060  GOSUB 6150
  107. 1070  PRINT " PLAY BOARD NUMBER?  ";:LOCATE ,,1:GOSUB 1170:GOSUB 6170:I$=KB$:I=ASC(I$)- 48:LOCATE ,,0:IF I> 9 THEN I= I- 7
  108. 1080  GOSUB 1210:IF I> 9 THEN PRINT CHR$ (I+ 55);:GOTO 1100
  109. 1090  PRINT I;
  110. 1100  IF I< 1 OR I> 13 THEN 1060
  111. 1110  IF I= 12 AND K(12,A)> - 1 THEN 1230
  112. 1120  IF K(I,A)= 0 THEN 1230
  113. 1130  LOCATE 24,1:BEEP
  114. 1140  PRINT "NO - NO - DUMMY - - TRY AGAIN";:FOR ND=1 TO 1500:NEXT:LOCATE 24,1:PRINT STRING$(60," ");
  115. 1150  LOCATE 25,1:PRINT STRING$(60," ");:LOCATE 25,1
  116. 1160  GOTO 1070
  117. 1170  REM  HIGH PITCH CLICK
  118. 1180  PLAY "L64T200N70":RETURN
  119. 1190  REM  GLISSANDO SOUND
  120. 1200  PLAY "MBt255MLL64O5CC#DD#EFF#GG#AA#B":RETURN
  121. 1210  ' LO PITCH CLICK
  122. 1220  PLAY "L64T200N46":RETURN
  123. 1230  REM  
  124. 1240  REM  DICE LOGIC
  125. 1250  REM  CLEAR/SET S(M,K)
  126. 1260  REM  
  127. 1270  FOR M= 0 TO 6
  128. 1280  FOR K= 0 TO 5
  129. 1290  S(M,K)= 0
  130. 1300  NEXT K
  131. 1310  NEXT M
  132. 1320  FOR J= 1 TO 5
  133. 1330  X= C(J):S(X,0)= S(X,0)+ 1
  134. 1340  P= S(X,0):S(X,P)= J
  135. 1350  NEXT J
  136. 1360  REM  
  137. 1370  REM  SET S(0,K)=M SEQUENCE BY QTY
  138. 1380  REM  
  139. 1390  X= 0
  140. 1400  FOR J= 5 TO 1 STEP - 1
  141. 1410  FOR M= 6 TO 1 STEP - 1
  142. 1420  IF S(M,0)< > J THEN 1440
  143. 1430  S(0,X)= M:X= X+ 1
  144. 1440  NEXT M
  145. 1450  NEXT J
  146. 1460  IF A* CC= N THEN 1830
  147. 1470  IF I> 6 THEN 1550
  148. 1480  REM  
  149. 1490  REM  CHECK PLAYER BOARD 1-6
  150. 1500  REM  
  151. 1510  GOSUB 5180
  152. 1520  IF X= - 1 THEN 1810
  153. 1530  K(I,A)= I* S(S(0,X),0)
  154. 1540  GOTO 3070
  155. 1550  REM  
  156. 1560  REM  CHECK PLAYER BOARD 7-13
  157. 1570  REM  
  158. 1580  ON I- 6 GOTO 1590,1610,1630,1650,1700,1740,1770
  159. 1590  IF S(S(0,0),0)< 3 THEN 1810
  160. 1600  GOSUB 5260:GOTO 3070
  161. 1610  IF S(S(0,0),0)< 4 THEN 1810
  162. 1620  GOSUB 5260:GOTO 3070
  163. 1630  IF S(S(0,0),0)< > 3 OR S(S(0,1),0)< > 2 THEN 1810
  164. 1640  K(9,A)= 25:GOTO 3070
  165. 1650  IF S(1,0)> 0 AND S(2,0)> 0 AND S(3,0)> 0 AND S(4,0)> 0 THEN 1690
  166. 1660  IF S(2,0)> 0 AND S(3,0)> 0 AND S(4,0)> 0 AND S(5,0)> 0 THEN 1690
  167. 1670  IF S(3,0)> 0 AND S(4,0)> 0 AND S(5,0)> 0 AND S(6,0)> 0 THEN 1690
  168. 1680  GOTO 1810
  169. 1690  K(10,A)= 30:GOTO 3070
  170. 1700  IF S(1,0)AND S(2,0)AND S(3,0)AND S(4,0)AND S(5,0)= 1 THEN 1730
  171. 1710  IF S(2,0)AND S(3,0)AND S(4,0)AND S(5,0)AND S(6,0)= 1 THEN 1730
  172. 1720  GOTO 1810
  173. 1730  K(11,A)= 40:GOTO 3070
  174. 1740  IF S(S(0,0),0)< > 5 THEN 1810
  175. 1750  IF K(12,A)= 0 THEN K(12,A)= 50:GOTO 3070
  176. 1760  K(12,A)= K(12,A)+ 100:GOTO 3070
  177. 1770  GOSUB 5260:GOTO 3070
  178. 1780  REM  
  179. 1790  REM  SET PLAYER INVALID
  180. 1800  REM  
  181. 1810  K(I,A)= - 1
  182. 1820  GOTO 3070
  183. 1830  REM  
  184. 1840  REM  COMPUTER CHECKS
  185. 1850  REM  
  186. 1860  I= 12
  187. 1870  IF S(S(0,0),0)= 5 AND K(12,A)= 0 THEN K(12,A)= 50:GOTO 3070
  188. 1880  IF S(S(0,0),0)= 5 AND K(12,A)> 0 THEN K(12,A)= K(12,A)+ 100:GOTO 3070
  189. 1890  I= 8
  190. 1900  IF S(S(0,0),0)= 4 AND K(8,A)= 0 THEN GOSUB 5260:GOTO 3070
  191. 1910  I= 9
  192. 1920  IF S(S(0,0),0)= 3 AND S(S(0,1),0)= 2 AND K(9,A)= 0 THEN K(9,A)= 25:GOTO 3070
  193. 1930  IF K(11,A)< > 0 THEN 1990
  194. 1940  I= 11
  195. 1950  IF S(1,0)AND S(2,0)AND S(3,0)AND S(4,0)AND S(5,0)= 1 THEN 1980
  196. 1960  IF S(2,0)AND S(3,0)AND S(4,0)AND S(5,0)AND S(6,0)= 1 THEN 1980
  197. 1970  GOTO 1990
  198. 1980  K(11,A)= 40:GOTO 3070
  199. 1990  IF K(10,A)< > 0 THEN 2060
  200. 2000  I= 10
  201. 2010  IF S(1,0)> 0 AND S(2,0)> 0 AND S(3,0)> 0 AND S(4,0)> 0 THEN 2050
  202. 2020  IF S(2,0)> 0 AND S(3,0)> 0 AND S(4,0)> 0 AND S(5,0)> 0 THEN 2050
  203. 2030  IF S(3,0)> 0 AND S(4,0)> 0 AND S(5,0)> 0 AND S(6,0)> 0 THEN 2050
  204. 2040  GOTO 2060
  205. 2050  K(10,A)= 30:GOTO 3070
  206. 2060  IF H< 3 THEN 2230
  207. 2070  I= 6
  208. 2080  IF S(6,0)> 2 AND K(6,A)= 0 THEN K(6,A)= 6* S(6,0):GOTO 3070
  209. 2090  I= 5
  210. 2100  IF S(5,0)> 2 AND K(5,A)= 0 THEN K(5,A)= 5* S(5,0):GOTO 3070
  211. 2110  I= 4
  212. 2120  IF S(4,0)> 2 AND K(4,A)= 0 THEN K(4,A)= 4* S(4,0):GOTO 3070
  213. 2130  I= 3
  214. 2140  IF S(3,0)> 2 AND K(3,A)= 0 THEN K(3,A)= 3* S(3,0):GOTO 3070
  215. 2150  I= 7
  216. 2160  IF S(S(0,0),0)> 2 AND K(7,A)= 0 THEN GOSUB 5260:GOTO 3070
  217. 2170  I= 2
  218. 2180  IF S(2,0)> 2 AND K(2,A)= 0 THEN K(2,A)= 2* S(2,0):GOTO 3070
  219. 2190  I= 1
  220. 2200  IF S(1,0)> 2 AND K(1,A)= 0 THEN K(1,A)= S(1,0):GOTO 3070
  221. 2210  I= 13:IF K(13,A)< > 0 THEN 2230
  222. 2220  IF C(1)+ C(2)+ C(3)+ C(4)+ C(5)> 19 THEN GOSUB 5260:GOTO 3070
  223. 2230  REM  
  224. 2240  REM  CLEAR DICE NUMBER F(B)
  225. 2250  REM  COMPUTER
  226. 2260  REM  
  227. 2270  FOR B= 1 TO 5
  228. 2280  F(B)= 0
  229. 2290  NEXT B
  230. 2300  REM  
  231. 2310  REM  GET DICE CONTROL
  232. 2320  REM  COMPUTER
  233. 2330  REM  
  234. 2340  H= H+ 1:IF H> 3 THEN 2930
  235. 2350  I= M(MR):IF I< > 0 THEN 2380
  236. 2360  MR= MR+ 1:IF MR> 13 THEN MR= 1
  237. 2370  GOTO 2350
  238. 2380  IF I= 12 AND K(12,A)> - 1 THEN 2420
  239. 2390  IF K(I,A)< > 0 THEN 2360
  240. 2400  IF I= 9 THEN 2530
  241. 2410  IF I= 10 OR I= 11 THEN 2650
  242. 2420  REM  
  243. 2430  REM  GET DICE 1,2,3,4
  244. 2440  REM  COMPUTER
  245. 2450  REM  
  246. 2460  M= 0:J= 1
  247. 2470  M= M+ 1:IF M> 4 THEN 2810
  248. 2480  K= S(0,M):IF K= 0 THEN 2810
  249. 2490  FOR L= 1 TO S(K,0)
  250. 2500  F(J)= S(K,L):J= J+ 1
  251. 2510  NEXT L
  252. 2520  GOTO 2470
  253. 2530  REM  
  254. 2540  REM  GET DICE FH
  255. 2550  REM  COMPUTER
  256. 2560  REM  
  257. 2570  M= 0:J= 1
  258. 2580  M= M+ 1:IF M> 4 THEN 2810
  259. 2590  K= S(0,M):IF K= 0 THEN 2810
  260. 2600  IF K> 1 THEN 2580
  261. 2610  FOR L= 1 TO S(K,0)
  262. 2620  F(J)= S(K,L):J= J+ 1
  263. 2630  NEXT L
  264. 2640  GOTO 2580
  265. 2650  REM  
  266. 2660  REM  GET DICE LG/SM ST
  267. 2670  REM  COMPUTER
  268. 2680  REM  
  269. 2690  M= 0:J= 1
  270. 2700  M= M+ 1:IF M> 4 THEN 2770
  271. 2710  K= S(0,M):IF K= 0 THEN 2770
  272. 2720  IF S(K,0)= 1 THEN 2700
  273. 2730  FOR L= 1 TO S(K,0)
  274. 2740  F(J)= S(K,L):J= J+ 1
  275. 2750  NEXT L
  276. 2760  GOTO 2700
  277. 2770  IF F(1)< > 0 THEN 2810
  278. 2780  L= INT (2* RND (1)+ 1)
  279. 2790  F(1)= 5
  280. 2800  IF L= 1 THEN F(1)= 1
  281. 2810  REM  
  282. 2820  REM  COMPUTER ROLL AGAIN
  283. 2830  REM  
  284. 2840  FOR B= 1 TO 4
  285. 2850  IF F(B)< 1 THEN 2900
  286. 2860  C(F(B))= INT (6* RND (1)+ 1)
  287. 2870  DIE= C(F(B)):J= F(B)- 1
  288. 2880  GOSUB 4320
  289. 2890  GOSUB 4600
  290. 2900  F(B)= 0
  291. 2910  NEXT B
  292. 2920  GOTO 1230
  293. 2930  REM  
  294. 2940  REM  COMPUTER MUST SCORE
  295. 2950  REM  
  296. 2960  MR= MR+ 1:IF MR> 13 THEN MR= 1
  297. 2970  I= M(MR):IF I= 0 THEN 2960
  298. 2980  IF K(I,A)< > 0 THEN 2960
  299. 2990  IF I> 6 THEN 3050
  300. 3000  GOSUB 5180
  301. 3010  IF X= - 1 THEN 3060
  302. 3020  IF K(I,A)< > 0 THMN 2960
  303. 3030  K(I,A)= S(I,0)* I
  304. 3040  IF K(I,A)< > 0 THEN 3070
  305. 3050  IF I= 13 AND K(13,A)= 0 THEN GOSUB 5260
  306. 3060  IF K(I,A)= 0 THEN K(I,A)= - 1
  307. 3070  REM  
  308. 3080  REM  GET SCOREBOARD TOTALS
  309. 3090  REM  
  310. 3100  FOR J= 14 TO 17
  311. 3110  K(J,A)= 0
  312. 3120  NEXT J
  313. 3130  FOR J= 1 TO 6
  314. 3140  IF K(J,A)< 0 THEN 3160
  315. 3150  K(15,A)= K(15,A)+ K(J,A)
  316. 3160  NEXT J
  317. 3170  IF K(15,A)> 62 THEN K(14,A)= 35
  318. 3180  FOR J= 7 TO 13
  319. 3190  IF K(J,A)< 0 THEN 3210
  320. 3200  K(16,A)= K(16,A)+ K(J,A)
  321. 3210  NEXT J
  322. 3220  K(17,A)= K(14,A)+ K(15,A)+ K(16,A)
  323. 3230  REM  
  324. 3240  REM  PRINT SCORE
  325. 3250  REM  
  326. 3260  GOSUB 1200
  327. 3270  COLOR 15,0
  328. 3280  FOR J= 1 TO 6
  329. 3290  IF K(J,A)< 0 THEN LOCATE J+1,4* (A- 1)+ 15:PRINT "  0";:GOTO 3320
  330. 3300  IF K(J,A)< 1 THEN 3320
  331. 3310  LOCATE J+1,4* (A- 1)+ 15:PRINT  USING"###";K(J,A);
  332. 3320  NEXT J
  333. 3330  FOR J= 7 TO 13
  334. 3340  IF K(J,A)< 0 THEN LOCATE J+4,4* (A- 1)+ 15:PRINT "  0":GOTO 3370
  335. 3350  IF K(J,A)< 1 THEN 3370
  336. 3360  LOCATE J+4,4* (A- 1)+ 15:PRINT USING "###";K(J,A)
  337. 3370  NEXT J
  338. 3380  LOCATE 9,4* (A- 1)+ 15:PRINT USING "###";K(15,A)
  339. 3390  LOCATE 19,4* (A- 1)+ 15:PRINT USING "###";K(16,A)
  340. 3400  LOCATE 20,4* (A- 1)+ 15:PRINT USING "###";K(14,A)
  341. 3410  LOCATE 21,4* (A- 1)+ 15:PRINT USING "###";K(17,A)
  342. 3420  COLOR 7,0
  343. 3430  IF A* CC< > N THEN 420
  344. 3440  REM  
  345. 3450  REM  RESET M(I) COMPUTER PRIORITIES
  346. 3460  REM  
  347. 3470  FOR B= 1 TO 13
  348. 3480  IF M(B)= 12 THEN 3500
  349. 3490  IF M(B)= I THEN M(B)= 0
  350. 3500  NEXT B
  351. 3510  GOTO 420
  352. 3520  REM  
  353. 3530  REM   INSTRUCTIONS
  354. 3540  REM  
  355. 3550  PRINT "                        Y A H T Z E E ":PRINT :PRINT
  356. 3560  PRINT "THIS IS THE GAME OF YAHTZEE - "
  357. 3570  PRINT "FROM 1 TO 7 PLAYERS MAY PLAY, OR ONE MAY PLAY AGAINST THE COMPUTER,"
  358. 3580  PRINT "WITH EACH PLAYERS CURRENT STATUS SHOWN ON THE SCREEN'S GAME BOARD."
  359. 3590  PRINT "YOU HAVE TO `SCORE' EACH PLAY, AND THE STRATEGY INVOLVED IS TO"
  360. 3600  PRINT "GUESS WHETHER YOU WILL BE LUCKY IN FUTURE ROLLS.":PRINT
  361. 3610  PRINT "         A YAHTZEE IS FIVE OF A KIND.  "
  362. 3620  PRINT "         A SMALL STRAIGHT IS ANY SEQUENCE OF FOUR."
  363. 3630  PRINT "         A LARGE STRAIGHT IS ANY SEQUENCE OF FIVE.":PRINT
  364. 3640  PRINT "A SECOND YAHTZEE EARNS A BONUS OF 100 POINTS (IF THE YAHTZEE IS PUT
  365. 3650  PRINT "INTO THE YAHTZEE BLOCK)..... IN ADDITION YOU WILL GET AN EXTRA TURN
  366. 3660  PRINT "AT THE END OF THE GAME"
  367. 3670  PRINT
  368. 3680  PRINT "ON EACH PLAY YOU WILL GET ONE ROLL OF THE FIVE DICE, FOLLOWED BY TWO"
  369. 3690  PRINT "CHANCES TO RE-ROLL SELECTED DICE.  GOOD LUCK ON YOUR PLAYING !"
  370. 3700  PRINT:PRINT :PRINT
  371. 3710  GOSUB 1180:PRINT "                 Press any key to continue. . . ."
  372. 3720  AA$=INKEY$:IF AA$="" THEN 3720
  373. 3730  RETURN
  374. 3740  LOCATE 10,10:PRINT "YATZEE.BAS     VER 3.2"
  375. 3750  LOCATE 12,10:PRINT "27 JUN 79"
  376. 3760  LOCATE 14,10:PRINT "DEVELOPED BY"
  377. 3770  LOCATE 15,13:PRINT "J.L. HELMS    &    M.F. PEZOK"
  378. 3780  LOCATE,16,13:PRINT "1009 LEYTE RD / 1321 SAIPAN RD"
  379. 3790  LOCATE 17,17:PRINT "CORONADO,  CA.  92118"
  380. 3800  LOCATE 18,15:PRINT "(714) 435-6992 / 437-4659"
  381. 3810  PRINT CHR$(11)
  382. 3820  RETURN 
  383. 3830  REM 
  384. 3840  REM   END - SORT WINNER
  385. 3850  REM 
  386. 3860  X= 2:IF N= 1 THEN 3940
  387. 3870  FOR J= 1 TO N- 1
  388. 3880  IF K(17,J)> K(17,J+ 1)THEN 3920
  389. 3890  K= K(17,J):K(17,J)= K(17,J+ 1):K(17,J+ 1)= K
  390. 3900  A$= A$(J):A$(J)= A$(J+ 1):A$(J+ 1)= A$
  391. 3910  X= 1
  392. 3920  NEXT J
  393. 3930  ON X GOTO 3830,3940
  394. 3940  REM 
  395. 3950  REM   PRINT WINNERS STANDINGS
  396. 3960  REM 
  397. 3970  RESTORE 4270
  398. 3980  FOR J= 1 TO N
  399. 3990  LOCATE 25,1:PRINT STRING$(60," ");
  400. 4000  IF J> 1 AND J= N THEN RESTORE 4310
  401. 4010  LOCATE 25,1:READ A$
  402. 4020  PRINT A$;"     ";A$(J);" ";
  403. 4030  TT= 500* (N- J+ 1):IF TT< 1500 THEN TT= 1500
  404. 4040  FOR T= 1 TO TT:NEXT T
  405. 4050  NEXT J
  406. 4060  LOCATE 25,1:PRINT STRING$(60," ");
  407. 4070  LOCATE 24,1:PRINT "+++   END OF GAME   +++";
  408. 4080  FOR T= 1 TO 2000:NEXT T
  409. 4090  '
  410. 4100  GOSUB 1180:LOCATE 25,1:INPUT "PLAY AGAIN?  Y/N  ";Y$
  411. 4110  IF LEFT$ (Y$,1)= "Y"THEN GOSUB 4160:GOTO 200
  412. 4120  IF LEFT$ (Y$,1)= CHR$(27) THEN BEEP:GOTO 4140
  413. 4130  IF LEFT$ (Y$,1)< > "N"THEN BEEP:GOTO 4100
  414. 4140  'CHAIN "MENU",1000
  415. 4150  END 
  416. 4160  REM 
  417. 4170  REM   CLEAR MATRICES
  418. 4180  REM 
  419. 4190  FOR K= 1 TO 7
  420. 4200  FOR J= 1 TO 18
  421. 4210  K(J,K)= 0
  422. 4220  NEXT J
  423. 4230  A$(K)= ""
  424. 4240  NEXT K
  425. 4250  CLS
  426. 4260  RETURN 
  427. 4270  DATA "+++   THE WINNER   +++"
  428. 4280  DATA " SECOND PLACE"," THIRD PLACE "
  429. 4290  DATA " FOURTH PLACE "," FIFTH PLACE "
  430. 4300  DATA " SIXTH PLACE "
  431. 4310  DATA " DEAD LAST "
  432. 4320  REM 
  433. 4330  REM   ERASE DIE
  434. 4340  REM 
  435. 4350  COLOR 0,7:PRINT"";:
  436. 4360  LOCATE 4* J+ 1,50:PRINT"       ";
  437. 4370  LOCATE 4* J+ 2,50:PRINT"       ";
  438. 4380  LOCATE 4* J+ 3,50:PRINT"       ";
  439. 4390  COLOR 7,0
  440. 4400  RETURN 
  441. 4410  REM  
  442. 4420  REM    CHECK IF DONE
  443. 4430  REM  
  444. 4440  X= 0
  445. 4450  FOR J= 1 TO N
  446. 4460  Y= 2
  447. 4470  FOR K= 1 TO 13
  448. 4480  IF K(K,J)= 0 THEN Y= 1
  449. 4490  NEXT K
  450. 4500  K(18,J)= Y
  451. 4510  IF Y= 2 THEN X= X+ 1
  452. 4520  NEXT J
  453. 4530  IF X= > N THEN A= 0
  454. 4540  RETURN 
  455. 4550  REM  
  456. 4560  REM  COMPUTER PRIORITIES INFO
  457. 4570  REM  
  458. 4580  GOSUB 5850
  459. 4590  RETURN 
  460. 4600  REM 
  461. 4610  REM   PRINT DIE
  462. 4620  REM 
  463. 4630  COLOR 0,7:LOCATE ,,0
  464. 4640  REM 
  465. 4650  PLAY "L32T200N=TN(DIE);"
  466. 4660  ON DIE GOTO 5000,4940,4880,4820,4760,4700
  467. 4670  '
  468. 4680  '   SIX
  469. 4690  '
  470. 4700  LOCATE 4*J+1,50:PRINT "";CHR$(32);CHR$(2);CHR$(32);CHR$(2);CHR$(32);CHR$(2);CHR$(32);
  471. 4710  LOCATE 4*J+2,50:PRINT CHR$(32);CHR$(32);CHR$(32);CHR$(32);CHR$(32);CHR$(32);CHR$(32);
  472. 4720  LOCATE 4*J+3,50:PRINT CHR$(32);CHR$(2);CHR$(32);CHR$(2);CHR$(32);CHR$(2);CHR$(32);:GOTO 5030
  473. 4730  '
  474. 4740  '   FIVE
  475. 4750  '
  476. 4760  LOCATE 4*J+1,50:PRINT "";CHR$(32);CHR$(2);CHR$(32);" ";CHR$(32);CHR$(2);" ";
  477. 4770  LOCATE 4*J+2,50:PRINT " ";CHR$(32);" ";CHR$(2);" ";CHR$(32);" ";
  478. 4780  LOCATE 4*J+3,50:PRINT " ";CHR$(2);" ";CHR$(32);" ";CHR$(2);" ";:GOTO 5030
  479. 4790  '
  480. 4800  '   FOUR
  481. 4810  '
  482. 4820  LOCATE 4*J+1,50:PRINT "";" ";CHR$(2);"  ";CHR$(32);CHR$(2);" ";
  483. 4830  LOCATE 4*J+2,50:PRINT "   ";CHR$(32);CHR$(32);CHR$(32);
  484. 4840  LOCATE 4*J+3,50:PRINT " ";CHR$(2);"  ";CHR$(32);CHR$(2);" ";:GOTO 5030
  485. 4850  '
  486. 4860  '   THREE
  487. 4870  '
  488. 4880  LOCATE 4*J+1,50:PRINT "";" ";CHR$(2);"     ";
  489. 4890  LOCATE 4*J+2,50:PRINT "   ";CHR$(2);"   ";
  490. 4900  LOCATE 4*J+3,50:PRINT "     ";CHR$(2);" ";:GOTO 5030
  491. 4910  '
  492. 4920  '   TWO
  493. 4930  '
  494. 4940  LOCATE 4*J+1,50:PRINT "";" ";CHR$(2);"     ";
  495. 4950  LOCATE 4*J+2,50:PRINT "       ";
  496. 4960  LOCATE 4*J+3,50:PRINT "     ";CHR$(2);" ";:GOTO 5030
  497. 4970  '
  498. 4980  '   ONE
  499. 4990  '
  500. 5000  LOCATE 4*J+1,50:PRINT "";"       ";
  501. 5010  LOCATE 4*J+2,50:PRINT "   ";CHR$(2);"   ";
  502. 5020  LOCATE 4*J+3,50:PRINT "       ";:GOTO 5030
  503. 5030  REM   GET OUT
  504. 5040  COLOR 7,0
  505. 5050  LOCATE 1,1
  506. 5060  RETURN 
  507. 5070  REM  
  508. 5080  REM  COMPUTER OPTION
  509. 5090  REM  
  510. 5100  CC= 0
  511. 5110  LOCATE 25,1
  512. 5120  PRINT "DO YOU WISH TO PLAY AGAINST ME?  Y/N  ";:GOSUB 1180
  513. 5130  Y$=INKEY$:IF Y$="" THEN 5130 ELSE BEEP
  514. 5140  IF Y$= "N"THEN RETURN 
  515. 5150  IF Y$< > "Y"THEN 5110
  516. 5160  CC= 1
  517. 5170  RETURN 
  518. 5180  REM  
  519. 5190  REM  CHECK FOR ACES-SIXES ANY POSITION
  520. 5200  REM  
  521. 5210  X= - 1
  522. 5220  FOR J= 0 TO 4
  523. 5230  IF S(0,J)= I THEN X= J
  524. 5240  NEXT J
  525. 5250  RETURN 
  526. 5260  REM  
  527. 5270  REM  TOTAL DICE VALUE
  528. 5280  REM  
  529. 5290  FOR J= 1 TO 5
  530. 5300  K(I,A)= K(I,A)+ C(J)
  531. 5310  NEXT J
  532. 5320  RETURN 
  533. 5330  REM  
  534. 5340  REM  MATRIX INFORMATION
  535. 5350  REM  
  536. 5360  REM  C(5)     CURRENT DICE
  537. 5370  REM  K(18,7)  SCOREBOARD
  538. 5380  REM           COLUMNS 1-13 BOARD NUMBER
  539. 5390  REM           COLUMN    14 BONUS UPPER
  540. 5400  REM           COLUMN    15 TOTAL UPPER
  541. 5410  REM           COLUMN    16 TOTAL LOWER
  542. 5420  REM           COLUMN    17 GRAND TOTAL
  543. 5430  REM           COLUMN    18 DONE/NOT DONE STATUS
  544. 5440  REM           ROW     1- 7 PLAYERS SCORE
  545. 5450  REM           ROW        N COMPUTERS SCORE (<7 PLAYERS)
  546. 5460  REM  
  547. 5470  REM  F(5)     DICE NUMBER TO ROLL AGAIN
  548. 5480  REM  A$(7)    PLAYERS NAMES
  549. 5490  REM  S(6,5)   COMPUTERS DICE LOGIC
  550. 5500  REM           COLUMN     0 DICE NUMBER BY QTY SEQUENCE
  551. 5510  REM           COLUMN     1 QTY/POSITION FOR ACES
  552. 5520  REM           COLUMN     2 QTY/POSITION FOR TWOS
  553. 5530  REM           COLUMN     3 QTY/POSITION FOR THREES
  554. 5540  REM           COLUMN     4 QTY/POSITION FOR FOURS
  555. 5550  REM           COLUMN     5 QTY/POSITION FOR FIVES
  556. 5560  REM           COLUMN     6 QTY/POSITION FOR SIXES
  557. 5570  REM           ROW        0 QUANTITY OF DICE
  558. 5580  REM           ROW     1- 5 POSITION OF DICE IN C(5)
  559. 5590  REM  
  560. 5600  REM  SAMPLE S(Y,X) FOR DICE OF 5,2,4,6,4
  561. 5610  REM  
  562. 5620  REM  Y/X   0  1  2  3  4  5
  563. 5630  REM  0     4  6  5  2          IN QTY/VALUE SEQUENCE
  564. 5640  REM  1                         NO DIE=1
  565. 5650  REM  2     1  2                1 TWO POSITION 2
  566. 5660  REM  3                         NO DIE=3
  567. 5670  REM  4     2  3  5             2 FOURS POSITIONS 3 AND 5
  568. 5680  REM  5     1  1                1 FIVE POSITION 1
  569. 5690  REM  6     1  4                1 SIX POSITION 4
  570. 5700  REM           +           +
  571. 5710  REM  +     +  ++++++++++++++++ SECTION FOR POSITION DATA
  572. 5720  REM  +     +------------------ COLUMN INDICATES QTY
  573. 5730  REM  +------------------------ INDEX EQUATES TO DIE VALUE
  574. 5740  REM  
  575. 5750  REM  M(13)    PRIORITY NUMBERS FOR MUST SCORE WHERE VALUE
  576. 5760  REM           REFERS TO PLAY BOARD NUMBER
  577. 5770  REM  
  578. 5780  REM  TO RUN INTERNAL CHECKS SECTION - ENTER A -1 FOR
  579. 5790  REM  PLAYING BOARD NUMBER OR QTY OF DICE TO ROLL
  580. 5800  REM  AGAIN - - DATA WILL NOT BE LOST AND SCREEN
  581. 5810  REM  WILL BE RESET WITH CURRENT DICE SHOWN - -
  582. 5820  REM  PLAYERS/COMPUTERS SCORE WILL NOT SHOW UNTIL
  583. 5830  REM  AFTER THEIR TURN
  584. 5840  REM  
  585. 5850  REM  COMPUTER PRIORIRIES
  586. 5860  RESTORE 5870
  587. 5870  DATA 11,9,12,8,1,2,3,4,5,6,10,7,13
  588. 5880  FOR Y= 1 TO 13:READ M(Y):NEXT :RETURN :RETURN 
  589. 5890  REM player's board
  590. 5900  CLS
  591. 5910  PRINT"             ERRTHENTHENTHENFNTHENTHENTHENFNTHENTHENTHENFNTHENTHENTHENFNTHENTHENTHENFNTHENTHENTHENOPTION"
  592. 5920  PRINT"ACES........1CALL...CALL...CALL...CALL...CALL...CALL...CALL1"
  593. 5930  PRINT"TWOS........2CALL...CALL...CALL...CALL...CALL...CALL...CALL2"
  594. 5940  PRINT"THREES......3CALL...CALL...CALL...CALL...CALL...CALL...CALL3"
  595. 5950  PRINT"FOURS.......4CALL...CALL...CALL...CALL...CALL...CALL...CALL4   Y"
  596. 5960  PRINT"FIVES.......5CALL...CALL...CALL...CALL...CALL...CALL...CALL5   A"
  597. 5970  PRINT"SIXES.......6CALL...CALL...CALL...CALL...CALL...CALL...CALL6   H"
  598. 5980  PRINT"             PSETTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHEN<0xB5!>    T"
  599. 5990  PRINT"TOTAL UPPER..CALL...CALL...CALL...CALL...CALL...CALL...CALL    Z"
  600. 6000  PRINT"             PSETTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHEN<0xB5!>    E"
  601. 6010  PRINT"3 OF A KIND.7CALL...CALL...CALL...CALL...CALL...CALL...CALL7   E"
  602. 6020  PRINT"4 OF A KIND.8CALL...CALL...CALL...CALL...CALL...CALL...CALL8"
  603. 6030  PRINT"FULL HOUSE..9CALL...CALL...CALL...CALL...CALL...CALL...CALL9"
  604. 6040  PRINT"SM STRAIGHT.ACALL...CALL...CALL...CALL...CALL...CALL...CALLA"
  605. 6050  PRINT"LG STRAIGHT.BCALL...CALL...CALL...CALL...CALL...CALL...CALLB"
  606. 6060  PRINT"YATZEE......CCALL...CALL...CALL...CALL...CALL...CALL...CALLC"
  607. 6070  PRINT"CHANCE......DCALL...CALL...CALL...CALL...CALL...CALL...CALLD"
  608. 6080  PRINT"             PSETTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHENINSTRTHENTHENTHEN<0xB5!>"
  609. 6090  PRINT"TOTAL LOWER..CALL...CALL...CALL...CALL...CALL...CALL...CALL"
  610. 6100  PRINT"TOP BONUS....CALL...CALL...CALL...CALL...CALL...CALL...CALL"
  611. 6110  PRINT"GRAND TOTAL..CALL...CALL...CALL...CALL...CALL...CALL...CALL"
  612. 6120  PRINT"             ERLTHENTHENTHENSTEPTHENTHENTHENSTEPTHENTHENTHENSTEPTHENTHENTHENSTEPTHENTHENTHENSTEPTHENTHENTHENSAVE"
  613. 6130  FOR N=1 TO 5:LOCATE N*4-2,46:PRINT N;:NEXT
  614. 6140  RETURN
  615. 6150  LOCATE 25,1:PRINT STRING$(70," ");:LOCATE 25,1:RETURN
  616. 6160  ' KB INPUT AND ESCAPE
  617. 6170  KB$="":WHILE KB$="":KB$=INKEY$:WEND
  618. 6180  IF KB$=CHR$(27) THEN 4140 ELSE RETURN
  619. 6190  '** DONE - PRESS ENTER TO RETURN TO MENU **
  620.